import dayjs from 'dayjs';

/**
 * @summary 相对时间的工具函数
 * @param {Object} qLangRelativeTime
 * @description 需要传入多语言配置对象
 */
export function useRelativeTime(qLangRelativeTime) {
  /**
   * 获取展示用友好可读的时间
   * @param {String} strDatetime
   * @param {String} fmt 默认的显示格式
   * @returns 友好可读的时间
   *
   * @description
   * > 当时间差不足24小时时，即便是隔日，dayjs 算 diff 也是 0 day
   * > 所以，需要先用 YYYY-MM-DD 格式算日期差，日数差为 0 时再算时间差
   */
  const relativeTime = (strDatetime, fmt = 'YYYY.MM.DD HH:mm:ss') => {
    if (!strDatetime) return;

    const date1 = dayjs(dayjs(strDatetime).format('YYYY/MM/DD'));
    const date2 = dayjs(dayjs().format('YYYY/MM/DD')); // now time

    const diffDays = date2.diff(date1, 'days');

    if (diffDays === 0) {
      const dt1 = dayjs(strDatetime);
      const diffSeconds = dayjs().diff(dt1, 'seconds');
      if (diffSeconds < 60) {
        // return '刚刚';
        return qLangRelativeTime.justNow;
      } else if (diffSeconds < 600) {
        // return `${parseInt(diffSeconds / 60)}分钟前`;
        return qLangRelativeTime.minutesAgo(parseInt(diffSeconds / 60));
      }
      return dt1.format('HH:mm');
    } else if (diffDays === 1) {
      // return '昨天';
        return qLangRelativeTime.yesterday;
    } else if (diffDays === 2) {
      // return '前天';
        return qLangRelativeTime.beforeYesterday;
    } else {
      return dayjs(strDatetime).format(fmt);
    }
  };

  return relativeTime;
};
